In a graphics processing system, objects to be displayed are generally represented by a collection of polygons. Polygons are generally chosen due to the existence of efficient algorithms for the rendering thereof. However, the object that is approximated by polygons is frequently a curved shape. Most methods for describing these surfaces fall under the classification of “higher order surfaces” (HOS).
Patches, such as a Bezier patch, may represent a surface of an object. These are one representative type of HOS. These patches may typically contain information beyond standard pixel information and may further include information relating to surface normals, lighting source orientation, surface color and opacity, and coordinates of a texture image to be mapped onto the surface. Subdividing the patches until the subpatches are sufficiently flat so they may be approximated by a quadrilateral may be used to render the HOS or any other criterion to subdivide patches to render. The subpatches may then be divided into triangles for graphics processing.
Another problem is the relative location of the object, such as a primitive, within a viewable output screen. The primitive, such as a triangle, defines an area and includes a plurality of pixels. Due to the size of the primitive and the location of the primitive within a rendered scene, the ratio of the number of pixels relative to the primitive may be skewed.
As primitives may be deeper within the rendered scene, such as having a smaller depth value, the ratio of pixels per primitive may be reduced. During the rendering of the pixels, the depth offset may adversely affect the computation of tessellation factors. Using an adaptive tessellation technique, various adaptive tessellation factors may be computed using a software algorithm. However, the technique includes processing time limitations and further includes space limitations as there must be physical space within a graphics processing system for a processor, such as a general purpose processor, executing operating instructions for calculating the adaptive tessellation factors.
Therefore, during the processing of tessellation factors, this technique may be inefficient as it requires offloading of vertex information, computation of the adaptive tessellation factors, and loading these tessellation factors back into the processing pipeline.
Another approach utilized for generating tessellation factors is an independent hardware configuration, which interfaces with the graphics rendering pipeline. This hardware approach provides a separate processor in communication with the graphics rendering pipeline and thus not only requires valuable real estate for the extra hardware, but also requires further processing time for the transmission of primitive indices to the hardware device and the transmission of vertex tessellated data back to the processing pipeline.
During the generation of tessellation factors, there are also limitations regarding the adaptability of the tessellation engine to perform discrete tessellation, continuous tessellation, and adaptive tessellation. Current solutions provide for a tessellation engine to be designated for performing a predetermined type of tessellation, thereby only allowing for the reception of limited primitive types and thereby limited tessellation patterns.
As such, there exists a need for generating tessellation factors independent of the primitive types, wherein the tessellation factor generation efficiently uses existing available processing resources without adversely affecting system processing speeds.